from semantic_kernel.functions import kernel_function

'''
用编程语言写的函数，如果用 SK 的 Native Function 方式定义，就能纳入到 SK 的编排体系，可以被 Planner、其它 Plugin 调用。
下面，写一个查询数据库的函数。
这个函数名是 query_database。输入为一个 SQL 表达式
它可以放到目录结构中，在 demo/MyPlugins/DBPlugin.py 里加入。
'''


class DBConnectorPlugin:
    def __init__(self, db_cursor):
        self.db_cursor = db_cursor

    @kernel_function(
        description="查询数据库",  # function 描述
        name="query_database",  # function 名字
    )
    def exec(self, sql_exp: str) -> str:
        self.db_cursor.execute(sql_exp)
        records = self.db_cursor.fetchall()
        return str(records)
